1
HIPエコシステムのアーキテクチャ的基盤
AI022Lesson 3
00:00

この HIPエコシステム は、AMDとNVIDIAアーキテクチャ間でのソースコード互換性を実現するための軽量な抽象レイヤーとして設計されています。これは ROCm(Radeon Open Compute) スタックを使用し、特に 異種システムアーキテクチャ(HSA) ランタイムと カーネル統合ドライバ(KFD)を活用しています。

1. 初期化ブートストラップ

初期化は、 hsa_init(0, ...) および hsaKmtOpenKFD(...)を通じて低レベルのカーネルドライバとのハンドシェイクから始まります。これらの確立呼び出しにより、ユーザースペースアプリケーションとAMD GPUハードウェアの間の通信ブリッジが構築されます。

2. テポロジーとプロパティの検出

カーネルの起動前に、ランタイムは hsaKmtAcquireSystemProperties および hsaKmtGetNodePropertiesを使用してハードウェア機能を特定します。また、物理メモリをGPUノードにマッピングするために hsaKmtMapMemoryToGPUNodesを使用し、デバイスに対するページテーブルの可視性を確保します。

3. コンパイルパイプライン

CUDAとHIPの橋渡しは、以下の2つの柱によって構成されています: hipify-perl (正規表現ベースのトランスパイラー)および hipcc (コンパイララッパー)。

# ポーティングワークフローの例
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out

4. バージョン管理ロジック

互換性は、正確な式を用いて保証され、 hipRuntimeGetVersion がHSA拡張テーブルと一致することを確認します:

$$\text{HIP\_VERSION} = \text{MAJOR} \times 10^7 + \text{MINOR} \times 10^5 + \text{PATCH}$$

アプリケーションレイヤー(./square.out)HIPレイヤー(hipcc / ランタイムAPI)HSAランタイム / 拡張テーブルカーネルドライバ(KFD)& ハードウェア
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>